package com.hmc.modules.sjfx.util;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.LinkedHashSet;

/**
 * List工具类
 */
public class ListUtil {
    /**
     * values 排序去重
     * 注意：此方法假设输入列表中的元素为非null。若输入列表为空或包含null元素，将抛出 IllegalArgumentException。
     */
    public static List<Double> sortAndDistinct(List<Double> values) {
        // 校验输入的列表不为空且不含null元素，使用Stream API简化校验逻辑
        if (values == null || values.stream().anyMatch(Objects::isNull)) {
            throw new IllegalArgumentException("输入的列表不能为空且不能包含null元素");
        }

        // 对输入的列表进行排序
        List<Double> sortedValues = new ArrayList<>(values);
        Collections.sort(sortedValues);

        // 使用LinkedHashSet去重，以保持元素的顺序并避免使用HashSet可能带来的精度损失
        List<Double> distinctValues = new ArrayList<>(new LinkedHashSet<>(sortedValues));

        return distinctValues;
    }
}
